<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>计算属性的缓存</title>
</head>
<body>
<!--
  为何需要计算属性：
    表达式的计算逻辑可能会比较复杂，使用计算属性可以使模板内容更加简洁
    计算属性是数据响应式的

    计算属性和方法的区别：
     1. 计算属性是基于它们的依赖进行缓存的
     2. 方法不存在缓存
-->

<div id="app">
  <div>{{reverseMsg}}</div>
  <div>{{reverseMsg}}</div>
  <hr>
  <div>{{reverseStr(msg)}}</div>
  <div>{{reverseStr(msg)}}</div>

</div>

<script src="../lib/vue.js"></script>
<script>
  let vm = new Vue({
    el: '#app',
    data: {
      msg: 'Hello'
    },
    computed: {
      reverseMsg() {
        console.log('computed')
        return this.msg.split('').reverse().join('')
      }
    },
    methods: {
      reverseStr() {
        console.log('method')
        return this.msg.split('').reverse().join('')
      }
    }
  })
</script>
</body>
</html>